Skip to content

[inventory] record caboose SIGN value #8021

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

karencfv
Copy link
Contributor

Cabooses for RoT archives and RoT bootloader archives (but not SP archives) contain a SIGN key that's a hash of the public key that the RoT needs its software signed by. Software that's updating the RoT or RoT bootloader needs this information to choose the appropriate Hubris archive.

This commit collects the value during inventory, so Reconfigurator will have it available.

Closes: #7914

@karencfv karencfv requested a review from davepacheco April 22, 2025 06:59
Copy link
Collaborator

@davepacheco davepacheco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice -- that was fast! I have a question below about the database query.

The bigger thing is: do we want to have separate types (and maybe database constraints) where the sign field is not nullable? I mean: if we expect all RoT and RoT bootloader cabooses to have SIGN field but the others don't (is that right?), should we have separate types to reflect this so that when looking at an RoT/RoT bootloader caboose you don't have to check for this? What do you think @jgallagher?

Comment on lines 647 to 648
.and(dsl_sw_caboose::sign.eq(
found_caboose.caboose.sign.clone(),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this work regardless of whether found_caboose or the given row's caboose is NULL? I thought sometimes you needed to use IS NOT NULL and/or IS NULL.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are absolutely right. I read up on the documentation and it looks like need to change this.

comparisons with NULL using = or <> will result in NULL, not true or false. Use IS NULL or IS NOT NULL for such checks.

Sadly, because of diesel, the modified code ends up being really janky. I kept getting mistmatched arms/values so I ended up with this:

let selection_inner_join_on =  dsl_baseboard_id::part_number
    .eq(baseboard_id.part_number.clone())
    .and(
        dsl_baseboard_id::serial_number.eq(
            baseboard_id.serial_number.clone(),
        ),
    )
    .and(dsl_sw_caboose::board.eq(
        found_caboose.caboose.board.clone(),
    ))
    .and(
        dsl_sw_caboose::git_commit.eq(
            found_caboose
                .caboose
                .git_commit
                .clone(),
        ),
    )
    .and(
        dsl_sw_caboose::name.eq(found_caboose
            .caboose
            .name
            .clone()),
    )
    .and(dsl_sw_caboose::version.eq(
        found_caboose.caboose.version.clone(),
    )
);

let select_by = (
    dsl_baseboard_id::id,
    dsl_sw_caboose::id,
    db_collection_id
        .into_sql::<diesel::sql_types::Uuid>(),
    found_caboose
        .time_collected
        .into_sql::<diesel::sql_types::Timestamptz>(),
    found_caboose
        .source
        .clone()
        .into_sql::<diesel::sql_types::Text>(),
    db_which.into_sql::<CabooseWhichEnum>(),
);

let columns = (
    dsl_inv_caboose::hw_baseboard_id,
    dsl_inv_caboose::sw_caboose_id,
    dsl_inv_caboose::inv_collection_id,
    dsl_inv_caboose::time_collected,
    dsl_inv_caboose::source,
    dsl_inv_caboose::which,
);

match found_caboose.caboose.sign.clone() {
    None => {
        let selection = nexus_db_schema::schema::hw_baseboard_id::table.inner_join(
            nexus_db_schema::schema::sw_caboose::table.on(
                selection_inner_join_on
                .and(dsl_sw_caboose::sign.is_null())
            ),
        )
        .select(select_by);

        let _ = diesel::insert_into(nexus_db_schema::schema::inv_caboose::table)
        .values(selection)
        .into_columns(columns)
        .execute_async(&conn)
        .await?;
    },
    Some(_) => {
        let selection = nexus_db_schema::schema::hw_baseboard_id::table.inner_join(
            nexus_db_schema::schema::sw_caboose::table.on(
                selection_inner_join_on
                .and(dsl_sw_caboose::sign.is_not_null())
            ),
        )
        .select(select_by);

        let _ = diesel::insert_into(nexus_db_schema::schema::inv_caboose::table)
        .values(selection)
        .into_columns(columns)
        .execute_async(&conn)
        .await?;
    }
};

It's awful. Also, it would get even messier if another nullable field appears. Do you have any suggestions on how to clean this up?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ooohhh very nice, thanks!

@davepacheco
Copy link
Collaborator

It'd be neat to see the output of omdb db inventory collections show latest sp from a racklette running this!

Copy link
Contributor Author

@karencfv karencfv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Success! Thanks for the review @davepacheco, I think the output is as expected?

root@oxz_switch1:~# omdb db inventory collections show latest sp
note: database URL not specified.  Will search DNS.
note: (override with --db-url or OMDB_DB_URL)
note: using DNS server for subnet fd00:1122:3344::/48
note: (if this is not right, use --dns-server to specify an alternate DNS server)
note: using database URL postgresql://root@[fd00:1122:3344:102::3]:32221,[fd00:1122:3344:103::3]:32221,[fd00:1122:3344:104::4]:32221,[fd00:1122:3344:104::3]:32221,[fd00:1122:3344:101::3]:32221/omicron?sslmode=disable
note: database schema version matches expected (139.0.0)
collection: 6a3d8864-e56d-4f52-bc54-db5d4e88d00c
collector:  d41629fe-37c6-4752-8698-3241f66c8399 (likely a Nexus instance)
started:    2025-04-23T03:33:40.613Z
done:       2025-04-23T03:33:52.322Z
errors:     0

Sled BRM42220036
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 14 (cubby 14)
    found at: 2025-04-23 03:33:41.761459 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 2a6a4b0c6494ae51ce4216de5d03a600d0cface267a1c6f854155ac4e41036fc
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM42220062
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 15 (cubby 15)
    found at: 2025-04-23 03:33:44.027992 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 9ba01fc19057d6fa0618a5918b6b11d41cf724aba41f27dd48ec06f89aea7fed
    RoT: slot B SHA3-256: 1f511bd014845f30bff9b047afbaeef6734f9fda4315a1708b0b65821882c567

Sled BRM42220030
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 16 (cubby 16)
    found at: 2025-04-23 03:33:40.631552 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 2a6a4b0c6494ae51ce4216de5d03a600d0cface267a1c6f854155ac4e41036fc
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM44220007
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 17 (cubby 17)
    found at: 2025-04-23 03:33:42.893452 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 2a6a4b0c6494ae51ce4216de5d03a600d0cface267a1c6f854155ac4e41036fc
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Power BRM11230017
    part number: 913-0000003
    power:    A2
    revision: 9
    MGS slot: Power 0
    found at: 2025-04-23 03:33:45.163019 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT BOARD NAME VERSION GIT_COMMIT SIGN 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAABIAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAABEAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAABIAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 17cf2709c1d55dcc839898e3073d9db0e37f540201f0cdb5bdae1ae0932327ac
    RoT: slot B SHA3-256: 42ccae12461701473cb2750e3b85bcfb3afaf8e881cfda711f625b33fb9eb932

Switch BRM31230004
    part number: 913-0000006
    power:    A0
    revision: 10
    MGS slot: Switch 0
    found at: 2025-04-23 03:33:47.631639 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT BOARD NAME VERSION GIT_COMMIT SIGN 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: c63635d08181e02ecd56eb3a29c42382b36ac327b68da2cce13eda255cde09fc

Switch BRM44220013
    part number: 913-0000006
    power:    A0
    revision: 4
    MGS slot: Switch 1
    found at: 2025-04-23 03:33:46.288474 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT BOARD NAME VERSION GIT_COMMIT SIGN 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: 09259c3a0255eb861b1119c3e61dd088416a41f7a6674c28364ef36e67cb70b7

Comment on lines 647 to 648
.and(dsl_sw_caboose::sign.eq(
found_caboose.caboose.sign.clone(),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are absolutely right. I read up on the documentation and it looks like need to change this.

comparisons with NULL using = or <> will result in NULL, not true or false. Use IS NULL or IS NOT NULL for such checks.

Sadly, because of diesel, the modified code ends up being really janky. I kept getting mistmatched arms/values so I ended up with this:

let selection_inner_join_on =  dsl_baseboard_id::part_number
    .eq(baseboard_id.part_number.clone())
    .and(
        dsl_baseboard_id::serial_number.eq(
            baseboard_id.serial_number.clone(),
        ),
    )
    .and(dsl_sw_caboose::board.eq(
        found_caboose.caboose.board.clone(),
    ))
    .and(
        dsl_sw_caboose::git_commit.eq(
            found_caboose
                .caboose
                .git_commit
                .clone(),
        ),
    )
    .and(
        dsl_sw_caboose::name.eq(found_caboose
            .caboose
            .name
            .clone()),
    )
    .and(dsl_sw_caboose::version.eq(
        found_caboose.caboose.version.clone(),
    )
);

let select_by = (
    dsl_baseboard_id::id,
    dsl_sw_caboose::id,
    db_collection_id
        .into_sql::<diesel::sql_types::Uuid>(),
    found_caboose
        .time_collected
        .into_sql::<diesel::sql_types::Timestamptz>(),
    found_caboose
        .source
        .clone()
        .into_sql::<diesel::sql_types::Text>(),
    db_which.into_sql::<CabooseWhichEnum>(),
);

let columns = (
    dsl_inv_caboose::hw_baseboard_id,
    dsl_inv_caboose::sw_caboose_id,
    dsl_inv_caboose::inv_collection_id,
    dsl_inv_caboose::time_collected,
    dsl_inv_caboose::source,
    dsl_inv_caboose::which,
);

match found_caboose.caboose.sign.clone() {
    None => {
        let selection = nexus_db_schema::schema::hw_baseboard_id::table.inner_join(
            nexus_db_schema::schema::sw_caboose::table.on(
                selection_inner_join_on
                .and(dsl_sw_caboose::sign.is_null())
            ),
        )
        .select(select_by);

        let _ = diesel::insert_into(nexus_db_schema::schema::inv_caboose::table)
        .values(selection)
        .into_columns(columns)
        .execute_async(&conn)
        .await?;
    },
    Some(_) => {
        let selection = nexus_db_schema::schema::hw_baseboard_id::table.inner_join(
            nexus_db_schema::schema::sw_caboose::table.on(
                selection_inner_join_on
                .and(dsl_sw_caboose::sign.is_not_null())
            ),
        )
        .select(select_by);

        let _ = diesel::insert_into(nexus_db_schema::schema::inv_caboose::table)
        .values(selection)
        .into_columns(columns)
        .execute_async(&conn)
        .await?;
    }
};

It's awful. Also, it would get even messier if another nullable field appears. Do you have any suggestions on how to clean this up?

@davepacheco
Copy link
Collaborator

@karencfv it seems like the SP caboose information is missing from that output. Did that get broken somehow?

@karencfv
Copy link
Contributor Author

@karencfv it seems like the SP caboose information is missing from that output. Did that get broken somehow?

@davepacheco, ha yes! Looks like the SPs did not have a sign value, and that's why they disappeared. I ran the latest code with @jgallagher's suggestion, and that issue was resolved. The SP caboose information shows up everywhere now.

I'm slightly concerned with Power BRM11230017, Switch BRM31230004 and Switch BRM44220013 though. They now only show SP caboose information, but nothing for RoT nor Stage. I'm a little confused as to why those would be missing that information, or is it expected from a raclette?

root@oxz_switch1:~# omdb db inventory collections show latest sp
note: database URL not specified.  Will search DNS.
note: (override with --db-url or OMDB_DB_URL)
note: using DNS server for subnet fd00:1122:3344::/48
note: (if this is not right, use --dns-server to specify an alternate DNS server)
note: using database URL postgresql://root@[fd00:1122:3344:104::4]:32221,[fd00:1122:3344:102::3]:32221,[fd00:1122:3344:104::3]:32221,[fd00:1122:3344:101::3]:32221,[fd00:1122:3344:103::3]:32221/omicron?sslmode=disable
note: database schema version matches expected (139.0.0)
collection: 4bf0ca98-d7c7-4fc1-9ee7-68251ee900db
collector:  656a766d-0c46-41cc-9f30-7bddf4713a63 (likely a Nexus instance)
started:    2025-04-24T02:45:03.140Z
done:       2025-04-24T02:45:14.984Z
errors:     0

Sled BRM42220036
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 14 (cubby 14)
    found at: 2025-04-24 02:45:04.462185 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.34  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 2a6a4b0c6494ae51ce4216de5d03a600d0cface267a1c6f854155ac4e41036fc
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM42220062
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 15 (cubby 15)
    found at: 2025-04-24 02:45:06.719661 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.34  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 9ba01fc19057d6fa0618a5918b6b11d41cf724aba41f27dd48ec06f89aea7fed
    RoT: slot B SHA3-256: 1f511bd014845f30bff9b047afbaeef6734f9fda4315a1708b0b65821882c567

Sled BRM42220030
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 16 (cubby 16)
    found at: 2025-04-24 02:45:03.208444 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.34  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 2a6a4b0c6494ae51ce4216de5d03a600d0cface267a1c6f854155ac4e41036fc
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM44220007
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 17 (cubby 17)
    found at: 2025-04-24 02:45:05.589204 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.32  fad1769684b1ca6e71398db03b685b2bd4d4dce8 n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 2a6a4b0c6494ae51ce4216de5d03a600d0cface267a1c6f854155ac4e41036fc
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Power BRM11230017
    part number: 913-0000003
    power:    A2
    revision: 9
    MGS slot: Power 0
    found at: 2025-04-24 02:45:07.953357 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT    BOARD NAME  VERSION GIT_COMMIT                               SIGN 
        SpSlot0 psc-c psc-c 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a  
        SpSlot1 psc-c psc-c 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a  
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAABIAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAABEAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAABIAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 17cf2709c1d55dcc839898e3073d9db0e37f540201f0cdb5bdae1ae0932327ac
    RoT: slot B SHA3-256: 42ccae12461701473cb2750e3b85bcfb3afaf8e881cfda711f625b33fb9eb932

Switch BRM31230004
    part number: 913-0000006
    power:    A0
    revision: 10
    MGS slot: Switch 0
    found at: 2025-04-24 02:45:11.429204 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT    BOARD     NAME      VERSION GIT_COMMIT                               SIGN 
        SpSlot0 sidecar-c sidecar-c 1.0.37  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a  
        SpSlot1 sidecar-c sidecar-c 1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a  
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: c63635d08181e02ecd56eb3a29c42382b36ac327b68da2cce13eda255cde09fc

Switch BRM44220013
    part number: 913-0000006
    power:    A0
    revision: 4
    MGS slot: Switch 1
    found at: 2025-04-24 02:45:10.201652 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT    BOARD     NAME      VERSION GIT_COMMIT                               SIGN 
        SpSlot0 sidecar-b sidecar-b 1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a  
        SpSlot1 sidecar-b sidecar-b 1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a  
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: 09259c3a0255eb861b1119c3e61dd088416a41f7a6674c28364ef36e67cb70b7

Comment on lines 263 to 265
// It is very unlikely that the sign hash will not be present.
// As far as we know, it will only be locally built BART signed images.
// We will be handling those edge cases by setting this field as an option.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't quite right. As far as I've seen, standard SP images do not provide a value here. This is probably the most specific thing I can say:

The sign will generally be present for production RoT and RoT bootloader images. It's currently absent from SP images and could be absent from RoT images as well.

but somebody else might know better.

@karencfv
Copy link
Contributor Author

Alright, so I checked London again. Someone else had used it and left their environment running so I just ran omdb db inventory collections show latest sp there to see what it shows and sure enough, all of the information is there for Power BRM11230017, Switch BRM31230004 and Switch BRM44220013:

<...>
Power BRM11230017
    part number: 913-0000003
    power:    A2
    revision: 9
    MGS slot: Power 0
    found at: 2025-04-27 21:45:47.989994 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               
        SpSlot0    psc-c       psc-c       1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 
        SpSlot1    psc-c       psc-c       1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAABIAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAABEAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAABIAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 17cf2709c1d55dcc839898e3073d9db0e37f540201f0cdb5bdae1ae0932327ac
    RoT: slot B SHA3-256: 42ccae12461701473cb2750e3b85bcfb3afaf8e881cfda711f625b33fb9eb932

Switch BRM31230004
    part number: 913-0000006
    power:    A0
    revision: 10
    MGS slot: Switch 0
    found at: 2025-04-27 21:45:50.811270 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               
        SpSlot0    sidecar-c   sidecar-c   1.0.37  a31b6acf6900c04978302b5a1dcc017e9b35e1fc 
        SpSlot1    sidecar-c   sidecar-c   1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: c63635d08181e02ecd56eb3a29c42382b36ac327b68da2cce13eda255cde09fc

Switch BRM44220013
    part number: 913-0000006
    power:    A0
    revision: 4
    MGS slot: Switch 1
    found at: 2025-04-27 21:45:49.540447 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               
        SpSlot0    sidecar-b   sidecar-b   1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 
        SpSlot1    sidecar-b   sidecar-b   1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: 09259c3a0255eb861b1119c3e61dd088416a41f7a6674c28364ef36e67cb70b7

@karencfv
Copy link
Contributor Author

Hm, I'm a bit at a loss as to what to do next, I saw the conversation on the update channel (It was a public holiday in NZ that day). so I'll continue there when it's everyone's Monday!

@karencfv
Copy link
Contributor Author

karencfv commented Apr 29, 2025

Alright, so I checked the nexus logs when running omdb db inventory collections show latest sp and It all looks perfectly fine to me. A bunch of API calls that all responded with a 200 status

<...>
04:15:49.643Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/sp/caboose?firmware_slot=0
04:15:49.907Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "715c76ed-5d1d-4e6e-baca-fb27150f00c6", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:49 GMT"} })
04:15:49.907Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/sp/caboose?firmware_slot=1
04:15:50.187Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "aae68602-8106-4241-b411-7ba056e45bf3", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:49 GMT"} })
04:15:50.187Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/caboose?firmware_slot=0
04:15:50.474Z INFO 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): ensured all Crucible datasets present in inventory have database records
    background_task = blueprint_rendezvous
    file = nexus/reconfigurator/rendezvous/src/crucible_dataset.rs:113
    num_already_exist = 38
    num_inserted = 0
    num_not_in_inventory = 0
04:15:50.474Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): activation complete
    background_task = blueprint_rendezvous
    elapsed = 1.531141764s
    iteration = 5
    status = {"blueprint_id":"dbc0988d-d570-4d7f-a483-4035474a3b49","inventory_collection_id":"dcf36bb0-6214-4eb7-b056-136dafaa678b","stats":{"crucible_dataset":{"num_already_exist":38,"num_inserted":0,"num_not_in_inventory":0},"debug_dataset":{"num_already_exist":38,"num_already_tombstoned":0,"num_inserted":0,"num_not_in_inventory":0,"num_tombstoned":0}}}
04:15:50.642Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "a0f90604-8e92-4702-b198-5246f577fc42", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:50 GMT"} })
04:15:50.642Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/caboose?firmware_slot=1
04:15:51.040Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "6d9cf42c-c77c-401a-b7a0-de5e2b60f362", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:50 GMT"} })
04:15:51.040Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/stage0/caboose?firmware_slot=0
04:15:51.558Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "016d38e6-b847-445c-bf7d-aee993b1fa7c", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:51.558Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/stage0/caboose?firmware_slot=1
04:15:52.077Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "ee9be848-cb05-45af-9f3c-da95046c89fd", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.077Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cmpa
04:15:52.140Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cmpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "740da58f-b4d7-4933-b528-975a7ad1fa72", "content-length": "702", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.140Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cfpa
04:15:52.216Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "94305b95-32fd-4837-abca-51ef2c3c5301", "content-length": "727", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.216Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cfpa
04:15:52.271Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "967f14e3-b262-4767-b1d1-3389ef0471de", "content-length": "729", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.271Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cfpa
04:15:52.323Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "7aedfad2-c5d9-4ac6-8595-b0c064780260", "content-length": "728", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.323Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14
04:15:52.336Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14", status: 200, headers: {"content-type": "application/json", "x-request-id": "b8b6e1fe-cf16-4b9c-8ef6-9d855b504eef", "content-length": "733", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.336Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/sp/caboose?firmware_slot=0
04:15:52.338Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "378e671c-c681-4820-a953-cb2188132f63", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.338Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/sp/caboose?firmware_slot=1
04:15:52.340Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "869c0a4b-25a6-4764-afa5-7c002aa569f9", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:51 GMT"} })
04:15:52.340Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/caboose?firmware_slot=0
04:15:52.612Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "2b9433bb-903f-43c1-b551-2c019262a32f", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:52 GMT"} })
04:15:52.612Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/caboose?firmware_slot=1
04:15:52.886Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "2ec5fa9d-053d-4bf7-9244-47c469f06817", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:52 GMT"} })
04:15:52.886Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/stage0/caboose?firmware_slot=0
04:15:53.150Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "bf1de89e-de46-4036-a647-103057674c01", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:52 GMT"} })
04:15:53.150Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/stage0/caboose?firmware_slot=1
04:15:53.571Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "abc143f0-4bdf-4f72-bb37-52d9ceb4481a", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.571Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cmpa
04:15:53.649Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cmpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "efada1ec-38b7-4c31-87a4-9f7a35473dc8", "content-length": "702", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.649Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cfpa
04:15:53.704Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "08a3a421-d6a2-45c4-b54d-d970965d89cf", "content-length": "727", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.704Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cfpa
04:15:53.756Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "b90bd11d-45ac-4259-a352-7d9cbc194c8e", "content-length": "729", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.756Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cfpa
04:15:53.805Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "9ec1da05-84fc-4caf-945d-a0a8759c6b38", "content-length": "728", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.805Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17
04:15:53.818Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17", status: 200, headers: {"content-type": "application/json", "x-request-id": "f820f157-3963-4994-ad94-7bf545b6feb2", "content-length": "735", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.818Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/sp/caboose?firmware_slot=0
04:15:53.821Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "570a7d0c-8922-4ec3-869b-d62bb6254862", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.821Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/sp/caboose?firmware_slot=1
04:15:53.824Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "36ff4361-c3d4-4a49-b90d-1d34f317ed99", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:53.824Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/caboose?firmware_slot=0
04:15:54.083Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "1cb14a74-3897-44f0-b31e-acb65ccbb864", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:54.083Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/caboose?firmware_slot=1
04:15:54.341Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "b4af57d8-f117-407c-a29c-a8d29c1a32e1", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:53 GMT"} })
04:15:54.341Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/stage0/caboose?firmware_slot=0
04:15:54.635Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "0b3d0ff8-faae-4fb1-980d-6ba26249ba3e", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.635Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/stage0/caboose?firmware_slot=1
04:15:54.907Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "b16f9c9d-7804-49c1-88e9-d84c861dc408", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.907Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cmpa
04:15:54.923Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cmpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "d31787ad-0972-4482-ad0d-664c048063a3", "content-length": "702", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.923Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cfpa
04:15:54.943Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "8af73a2b-93f9-4298-bc8b-d500e0d3731a", "content-length": "727", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.943Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cfpa
04:15:54.959Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "02a65290-6fdf-474c-ad2c-d4469701c01f", "content-length": "729", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.959Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cfpa
04:15:54.975Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "84370a9e-99e8-4ae1-b1b8-e6f706336ec2", "content-length": "728", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.975Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15
04:15:54.988Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15", status: 200, headers: {"content-type": "application/json", "x-request-id": "1667cd02-4949-4327-89c3-0216f6971f06", "content-length": "733", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.988Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/sp/caboose?firmware_slot=0
04:15:54.991Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "f49e619f-a83b-4583-ab0e-88f590f1b593", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.991Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/sp/caboose?firmware_slot=1
04:15:54.994Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "5ac5e688-c71f-40a9-a29d-d5744dc72690", "content-length": "138", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:54.994Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/caboose?firmware_slot=0
04:15:55.253Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "593cf4a6-cfad-4b77-b2a5-b8fcc42702c0", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:55.253Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/caboose?firmware_slot=1
04:15:55.522Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "b1f3640f-237f-417d-93d6-9379aa8cab0a", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:54 GMT"} })
04:15:55.522Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/stage0/caboose?firmware_slot=0
04:15:55.784Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "da09b904-9df6-4721-974c-513ba54c59b0", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:55.784Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/stage0/caboose?firmware_slot=1
04:15:56.072Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "a5b35406-5364-4e3b-9134-8f7ff15e0984", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.072Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cmpa
04:15:56.099Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cmpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "c447cdee-ba85-45b8-8410-8410f1e1d550", "content-length": "702", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.099Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cfpa
04:15:56.131Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "4bcca67d-c8e3-4b4a-8ce6-0d59d7d51420", "content-length": "727", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.131Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cfpa
04:15:56.167Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "03cda677-284b-48a6-aa73-790673480cc5", "content-length": "729", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.167Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cfpa
04:15:56.198Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "1e2d8fe7-ea0f-465a-86bb-e2fd57844926", "content-length": "728", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.198Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0
04:15:56.276Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0", status: 200, headers: {"content-type": "application/json", "x-request-id": "3be98a16-ed92-4e87-bc04-2d9f54bda1be", "content-length": "733", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.276Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/sp/caboose?firmware_slot=0
04:15:56.314Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "0dd4e012-5a4d-42f2-bf11-b3af4f195496", "content-length": "132", "date": "Tue, 29 Apr 2025 04:15:55 GMT"} })
04:15:56.314Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/sp/caboose?firmware_slot=1
04:15:56.506Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "59c302ed-4589-48cb-ad48-4718d19d12bf", "content-length": "132", "date": "Tue, 29 Apr 2025 04:15:56 GMT"} })
04:15:56.506Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/caboose?firmware_slot=0
04:15:57.029Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "ab311045-9fc9-48ca-91db-58c0f7459eba", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:57 GMT"} })
04:15:57.029Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/caboose?firmware_slot=1
04:15:57.595Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "9ae42c86-deaa-4c57-924e-421089ae6c71", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:57 GMT"} })
04:15:57.595Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/stage0/caboose?firmware_slot=0
04:15:58.113Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "a06814a6-3eb6-4707-be8d-ef8f10466624", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:57 GMT"} })
04:15:58.113Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/stage0/caboose?firmware_slot=1
04:15:58.379Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "0c26ad2b-b4f5-46c1-9217-f077830f9ae0", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.379Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cmpa
04:15:58.395Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cmpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "3196c6aa-4564-4db0-bfad-711d436d1d65", "content-length": "702", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.395Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cfpa
04:15:58.410Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "eff71605-332f-48e2-abbb-ea9c7b1821af", "content-length": "727", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.410Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cfpa
04:15:58.429Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "b3d12ef2-7860-4204-b221-31a0ba8ce568", "content-length": "729", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.429Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cfpa
04:15:58.450Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "d7938693-677f-4a9e-8c17-d8bf5e490b65", "content-length": "728", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.450Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1
04:15:58.532Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1", status: 200, headers: {"content-type": "application/json", "x-request-id": "b2385411-ca8c-4b40-ae12-267776357191", "content-length": "733", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.532Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/sp/caboose?firmware_slot=0
04:15:58.545Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "69c3edad-6c48-4d93-aaaa-b9b96fb1a363", "content-length": "140", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.545Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/sp/caboose?firmware_slot=1
04:15:58.551Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "b43669c7-7226-41db-abb1-2f5c640c77fe", "content-length": "140", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.551Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/caboose?firmware_slot=0
04:15:58.913Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "e84ba272-80fd-407f-b466-000ed05caadf", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:58.913Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/caboose?firmware_slot=1
04:15:59.177Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "84779f10-d4ba-4c3b-9172-7fafbdb6511e", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:59.177Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/stage0/caboose?firmware_slot=0
04:15:59.445Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "59b0f6d7-f8e5-4f30-b96a-f97a90872b67", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:58 GMT"} })
04:15:59.445Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/stage0/caboose?firmware_slot=1
04:15:59.732Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "87407041-0565-4d70-a063-2c77cbeba1e0", "content-length": "205", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.732Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cmpa
04:15:59.752Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cmpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "538b941b-45f9-465f-90b9-4c20339ea34a", "content-length": "702", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.752Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cfpa
04:15:59.769Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "54450d12-ce40-48b4-b2a8-93ca5cd6232e", "content-length": "727", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.769Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cfpa
04:15:59.796Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "37d2302b-3594-4054-a9e4-7c46318afe9e", "content-length": "729", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.796Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = Some(Body)
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cfpa
04:15:59.829Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/cfpa", status: 200, headers: {"content-type": "application/json", "x-request-id": "c4dac85a-0814-4ca2-8686-9a2517a4e253", "content-length": "728", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.829Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0
04:15:59.842Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0", status: 200, headers: {"content-type": "application/json", "x-request-id": "2826cd86-d290-4387-9464-eebb775a7ee5", "content-length": "735", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.842Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/sp/caboose?firmware_slot=0
04:15:59.844Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/sp/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "fb716a63-88d5-44f9-aa00-a1769e9a1a39", "content-length": "140", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.844Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/sp/caboose?firmware_slot=1
04:15:59.847Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/sp/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "97ea66fb-4ca8-4c3a-8cb8-c017dfefe854", "content-length": "140", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:15:59.847Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/rot/caboose?firmware_slot=0
04:16:00.105Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/rot/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "e8a1a7dd-6b3a-406e-8fa1-5b7053059cdb", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:16:00.105Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/rot/caboose?firmware_slot=1
04:16:00.363Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/rot/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "e295963c-3585-493b-8326-89afa0703257", "content-length": "206", "date": "Tue, 29 Apr 2025 04:15:59 GMT"} })
04:16:00.363Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/stage0/caboose?firmware_slot=0
04:16:00.657Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/stage0/caboose?firmware_slot=0", status: 200, headers: {"content-type": "application/json", "x-request-id": "3170b46a-0375-449d-abce-8b9ed2018f1a", "content-length": "205", "date": "Tue, 29 Apr 2025 04:16:00 GMT"} })
04:16:00.657Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client request
    background_task = inventory_collection
    body = None
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    method = GET
    uri = http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/stage0/caboose?firmware_slot=1
04:16:00.920Z DEBG 4c9e3b5e-7634-43bd-92da-2fad4d67b3e1 (ServerContext): client response
    background_task = inventory_collection
    gateway_url = http://[fd00:1122:3344:101::2]:12225
    result = Ok(Response { url: "http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/stage0/caboose?firmware_slot=1", status: 200, headers: {"content-type": "application/json", "x-request-id": "25fc8794-de05-4d1a-a3f2-4ee1034cd50d", "content-length": "205", "date": "Tue, 29 Apr 2025 04:16:00 GMT"} })
<...>

I ran every single one of the caboose API calls manually and the results are as follows:

Sled 16

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/16/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}

Sled 14

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/14/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}

Sled 17

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/17/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}

Sled 15

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/sled/15/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "gimlet-c",
  "name": "gimlet-c",
  "version": "1.0.36",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf",
  "epoch": null
}

Power

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/power/0/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "psc-c",
  "name": "psc-c",
  "version": "1.0.35",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "441b09270d8715275d6b3c3b57d84dba539e34d0",
  "board": "psc-c",
  "name": "psc-c",
  "version": "1.0.33",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7",
  "epoch": null
}

Switch 1

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/1/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "sidecar-b",
  "name": "sidecar-b",
  "version": "1.0.37",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "441b09270d8715275d6b3c3b57d84dba539e34d0",
  "board": "sidecar-b",
  "name": "sidecar-b",
  "version": "1.0.35",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}

Switch 0

root@oxz_nexus_4c9e3b5e:~# curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/sp/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/sp/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/rot/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/rot/caboose?firmware_slot=1 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/stage0/caboose?firmware_slot=0 | jq
curl -s http://[fd00:1122:3344:101::2]:12225/sp/switch/0/component/stage0/caboose?firmware_slot=1 | jq
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "sidecar-c",
  "name": "sidecar-c",
  "version": "1.0.37",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "a31b6acf6900c04978302b5a1dcc017e9b35e1fc",
  "board": "sidecar-c",
  "name": "sidecar-c",
  "version": "1.0.37",
  "sign": null,
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}
{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}
{
  "git_commit": "95e79111096d7ec258d68a2c6840b6062efc7f54",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.3.3",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}

What's really strange now is that it seems that for Power BRM11230017, Switch BRM31230004 and Switch BRM44220013, the missing values for RoT and Stage0 that have a SIGN value, while the null ones (SP) are showing up just fine.

The only pattern I'm seeing here is that all of the SIGN values that show up are 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf while the ones that don't show up have another hash. Perhaps there is something wrong with the query that it somehow only shows records that are either 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf (the first SIGN value it fetched) or null? Does that even make sense?

Thoughts @davepacheco @jgallagher ?

@davepacheco
Copy link
Collaborator

Were you able to determine if the database inventory tables look correct or are the values missing (or otherwise wrong) there?

@jgallagher
Copy link
Contributor

Were you able to determine if the database inventory tables look correct or are the values missing (or otherwise wrong) there?

I hopped on london to look, and I think the database inventory tables do not look correct. I had suggested this in chat because I was suspicious of the insertions:

I'd definitely check whether there are rows in sw_caboose that don't have corresponding pointers in inv_caboose

But starting from the sw_caboose table, there's already a problem: we don't have rows for the switch or psc RoT cabooses at all:

root@[fd00:1122:3344:103::3]:32221/omicron> select * from sw_caboose;
                   id                  |    board    |                git_commit                |    name     | version |                               sign
---------------------------------------+-------------+------------------------------------------+-------------+---------+-------------------------------------------------------------------
  0ee2d038-add2-4105-89ca-e0e86415e015 | gimlet-c    | a31b6acf6900c04978302b5a1dcc017e9b35e1fc | gimlet-c    | 1.0.36  | NULL
  0fc79a96-5c84-4dae-b81b-37a4eab29d19 | sidecar-b   | a31b6acf6900c04978302b5a1dcc017e9b35e1fc | sidecar-b   | 1.0.37  | NULL
  519bac98-984a-41f9-8e54-a241e767d39e | oxide-rot-1 | 95e79111096d7ec258d68a2c6840b6062efc7f54 | oxide-rot-1 | 1.3.3   | 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf
  5450c326-0ffe-494c-be04-506f3bc93f9c | psc-c       | 441b09270d8715275d6b3c3b57d84dba539e34d0 | psc-c       | 1.0.33  | NULL
  69d9717f-2fae-44f5-b699-0dac6f3f59a2 | oxide-rot-1 | 71e20463580a8e17b8b1eb8172cc3cdbece479a6 | oxide-rot-1 | 1.0.34  | 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf
  b0ae7f60-bf9d-4827-8b29-3d08229a1d49 | sidecar-b   | 441b09270d8715275d6b3c3b57d84dba539e34d0 | sidecar-b   | 1.0.35  | NULL
  bf24c608-8328-4321-bc6c-62c96244a592 | sidecar-c   | a31b6acf6900c04978302b5a1dcc017e9b35e1fc | sidecar-c   | 1.0.37  | NULL
  ee9e40e6-4113-4fa4-9f37-c721e4c736f0 | psc-c       | a31b6acf6900c04978302b5a1dcc017e9b35e1fc | psc-c       | 1.0.35  | NULL
(8 rows)

Taking one of the cabooses missing from switch 0:

{
  "git_commit": "71e20463580a8e17b8b1eb8172cc3cdbece479a6",
  "board": "oxide-rot-1",
  "name": "oxide-rot-1",
  "version": "1.0.34",
  "sign": "1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27",
  "epoch": null
}

and assuming Nexus collected it faithfully, I tried to follow along where it should have been inserted into sw_caboose. It would get converted to a SwCaboose here:

let cabooses = collection
.cabooses
.iter()
.map(|s| SwCaboose::from((**s).clone()))
.collect::<Vec<_>>();

This will assign it a random id, but otherwise just copies over all the fields.

All the SwCabooses are then inserted in a single insert:

// Insert records (and generate ids) for each distinct caboose that
// we've found. Like baseboards, these might already be present and
// rows in this table are not scoped to a particular collection
// because they only map (immutable) identifiers to UUIDs.
{
use nexus_db_schema::schema::sw_caboose::dsl;
let _ = diesel::insert_into(dsl::sw_caboose)
.values(cabooses)
.on_conflict_do_nothing()
.execute_async(&conn)
.await?;
}

This has an on_conflict_do_nothing to avoid duplicating rows, but above we said each SwCaboose gets a random id during that conversion, so how does the deduplication work? I believe that's coming from this unique index on the table, which looks at the non-id columns:

omicron/schema/crdb/dbinit.sql

Lines 3352 to 3353 in 7f0ac3d

CREATE UNIQUE INDEX IF NOT EXISTS caboose_properties
on omicron.public.sw_caboose (board, git_commit, name, version);

I think this explains why the rows are missing. This PR adds a sign column to the table, but does not change the unique index. The switch 0 RoT caboose is identical to the gimlet RoT caboose in all fields except sign, so gets rejected as a duplicate by that index. Presumably the gimlet cabooses happen to be inserted first, so the switch and PSC cabooses that only differ in sign never make it in.

@karencfv
Copy link
Contributor Author

I think this explains why the rows are missing. This PR adds a sign column to the table, but does not change the unique index. The switch 0 RoT caboose is identical to the gimlet RoT caboose in all fields except sign, so gets rejected as a duplicate by that index. Presumably the gimlet cabooses happen to be inserted first, so the switch and PSC cabooses that only differ in sign never make it in.

Aha! yeah, that makes sense. I'll make the change and test it out on a raclette. Thank you @jgallagher !

@karencfv
Copy link
Contributor Author

karencfv commented Apr 30, 2025

Success!

root@oxz_switch1:~# omdb db inventory collections show latest sp
note: database URL not specified.  Will search DNS.
note: (override with --db-url or OMDB_DB_URL)
note: using DNS server for subnet fd00:1122:3344::/48
note: (if this is not right, use --dns-server to specify an alternate DNS server)
note: using database URL postgresql://root@[fd00:1122:3344:102::3]:32221,[fd00:1122:3344:104::3]:32221,[fd00:1122:3344:103::3]:32221,[fd00:1122:3344:101::3]:32221,[fd00:1122:3344:104::4]:32221/omicron?sslmode=disable
note: database schema version matches expected (139.0.0)
collection: 044a9a3b-c448-475a-bd61-cb6b9898d4a0
collector:  85872a2d-481b-4f4d-a34e-8eecbffdcce0 (likely a Nexus instance)
started:    2025-04-30T01:11:54.495Z
done:       2025-04-30T01:12:06.675Z
errors:     0

Sled BRM42220036
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 14 (cubby 14)
    found at: 2025-04-30 01:11:57.772083 UTC from http://[fd00:1122:3344:102::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 9ba01fc19057d6fa0618a5918b6b11d41cf724aba41f27dd48ec06f89aea7fed
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM42220062
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 15 (cubby 15)
    found at: 2025-04-30 01:12:00.040015 UTC from http://[fd00:1122:3344:102::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 9ba01fc19057d6fa0618a5918b6b11d41cf724aba41f27dd48ec06f89aea7fed
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM42220030
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 16 (cubby 16)
    found at: 2025-04-30 01:11:54.516447 UTC from http://[fd00:1122:3344:102::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAE8AAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 9ba01fc19057d6fa0618a5918b6b11d41cf724aba41f27dd48ec06f89aea7fed
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Sled BRM44220007
    part number: 913-0000019
    power:    A0
    revision: 6
    MGS slot: Sled 17 (cubby 17)
    found at: 2025-04-30 01:11:58.911771 UTC from http://[fd00:1122:3344:102::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    gimlet-c    gimlet-c    1.0.36  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 9ba01fc19057d6fa0618a5918b6b11d41cf724aba41f27dd48ec06f89aea7fed
    RoT: slot B SHA3-256: 16b846eb11c9307d208624bddff21b3dc0797fe7b364feaac202eb4f92996e50

Power BRM11230017
    part number: 913-0000003
    power:    A2
    revision: 9
    MGS slot: Power 0
    found at: 2025-04-30 01:12:01.546430 UTC from http://[fd00:1122:3344:102::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    psc-c       psc-c       1.0.35  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    psc-c       psc-c       1.0.33  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 f592d8f109b81881221eed5af6438abad9b5df8c220b9129c03763e7e10b22c7 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAABMAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAABMAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAABMAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: 17cf2709c1d55dcc839898e3073d9db0e37f540201f0cdb5bdae1ae0932327ac
    RoT: slot B SHA3-256: 6c2a3bf9ef18a025497af80ad468c73a1fa985c1c4029ed5b6a55de09ec364d8

Switch BRM31230004
    part number: 913-0000006
    power:    A0
    revision: 10
    MGS slot: Switch 0
    found at: 2025-04-30 01:12:02.678147 UTC from http://[fd00:1122:3344:102::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    sidecar-c   sidecar-c   1.0.37  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    sidecar-c   sidecar-c   1.0.37  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAiAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot A
    RoT: persistent boot preference: slot A
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: c63635d08181e02ecd56eb3a29c42382b36ac327b68da2cce13eda255cde09fc

Switch BRM44220013
    part number: 913-0000006
    power:    A0
    revision: 4
    MGS slot: Switch 1
    found at: 2025-04-30 01:12:04.072109 UTC from http://[fd00:1122:3344:101::2]:12225
    cabooses:
        SLOT       BOARD       NAME        VERSION GIT_COMMIT                               SIGN                                                             
        SpSlot0    sidecar-b   sidecar-b   1.0.37  a31b6acf6900c04978302b5a1dcc017e9b35e1fc n/a                                                              
        SpSlot1    sidecar-b   sidecar-b   1.0.35  441b09270d8715275d6b3c3b57d84dba539e34d0 n/a                                                              
        RotSlotA   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
        RotSlotB   oxide-rot-1 oxide-rot-1 1.0.34  71e20463580a8e17b8b1eb8172cc3cdbece479a6 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
        Stage0     oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
        Stage0Next oxide-rot-1 oxide-rot-1 1.3.3   95e79111096d7ec258d68a2c6840b6062efc7f54 1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27 
    RoT pages:
        SLOT         DATA_BASE64                         
        Cmpa         oAAAeAAAAAAAAAAAAAAAAP8CAP3/AgD9... 
        CfpaActive   AAAAACsAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaInactive AAAAACoAAAAAAAAAAAAAAAAAAAAAAAAA... 
        CfpaScratch  AAAAACsAAAAAAAAAAAAAAAAAAAAAAAAA... 
    RoT: active slot: slot B
    RoT: persistent boot preference: slot B
    RoT: pending persistent boot preference: -
    RoT: transient boot preference: -
    RoT: slot A SHA3-256: ccd280614a9cce6919bc935e797ec8ff3a060745a2cab5a0fa7a69e66a3f336b
    RoT: slot B SHA3-256: c63635d08181e02ecd56eb3a29c42382b36ac327b68da2cce13eda255cde09fc

Thanks @davepacheco @jgallagher! I'll rebase with main, and this should be ready to go then

@karencfv
Copy link
Contributor Author

It looks like a bunch of the tests are failing now :( My changes between d408a44 (the last time the tests passed) and the last commit are so small. I don't see how they could have broken anything? Additionally, the latest commit works as expected on London.

@davepacheco is there a chance #8055 has anything to do with this?

@davepacheco
Copy link
Collaborator

It looks like a bunch of the tests are failing now :( My changes between d408a44 (the last time the tests passed) and the last commit are so small. I don't see how they could have broken anything? Additionally, the latest commit works as expected on London.

@davepacheco is there a chance #8055 has anything to do with this?

I don't immediately see how. The first failure I looked at was this one:
https://buildomat.eng.oxide.computer/wg/0/details/01JT2JVYH85DW1E88RV7KCWE6F/i2RKCDstEvVpDVVe3xo3uaZQIXqViaIa04nihYX7ryVj9oUh/01JT2JWAAA7V8170JCVSP56YNS#S6015

It looks like this test is expecting an inventory collection to complete but it hasn't. Is there some test output that makes you suspect 8055? I would check out the Nexus logs and see if inventory collection is logging something about why it's not able to collect.

@karencfv
Copy link
Contributor Author

karencfv commented May 1, 2025

Is there some test output that makes you suspect 8055?

I added some additional logging to see if the cabooses were being collected correctly and they were. So I thought perhaps the refactoring might have changed something I somehow had missed. But it appears that's not the case, as I locally reverted the new sign index change and the tests passed just fine again. So, the failed tests definitely have to to with this PR.

Here's a summary of my debugging so far.

Starting from the very beginning, the tests loop over "attempt to fetch latest inventory collection" and time out not having done so.

MGS does seem to be retrieving the correct caboose information. There are several loops of this:

21:41:58.105Z INFO bb8b77f6-92b3-44d8-a699-f2d97de981a5 (dropshot): request completed
    latency_us = 731
    local_addr = [::1]:51937
    method = GET
    remote_addr = [::1]:47701
    req_id = ccc77dac-cace-4b78-85b4-4c554cc95946
    response_code = 200
    uri = /sp/switch/1/component/sp/caboose?firmware_slot=0
21:41:58.105Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (dropshot): incoming request
    local_addr = [::1]:51937
    method = GET
    remote_addr = [::1]:47701
    req_id = 01a6974e-4902-40e6-a423-30e2da3f21ef
    uri = /sp/switch/1/component/sp/caboose?firmware_slot=1
21:41:58.105Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): sending request to SP
    attempt = 1
    request = Message { header: Header { version: 17, message_id: 8817 }, kind: MgsRequest(ReadComponentCaboose { component: SpComponent { id: "sp" }, slot: 1, key: [71, 73, 84, 67] }) }
21:41:58.105Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): received response from SP
    header = Header { version: 17, message_id: 8817 }
    response = CabooseValue
21:41:58.105Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): sending request to SP
    attempt = 1
    request = Message { header: Header { version: 17, message_id: 8818 }, kind: MgsRequest(ReadComponentCaboose { component: SpComponent { id: "sp" }, slot: 1, key: [66, 79, 82, 68] }) }
21:41:58.105Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): received response from SP
    header = Header { version: 17, message_id: 8818 }
    response = CabooseValue
21:41:58.105Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): sending request to SP
    attempt = 1
    request = Message { header: Header { version: 17, message_id: 8819 }, kind: MgsRequest(ReadComponentCaboose { component: SpComponent { id: "sp" }, slot: 1, key: [78, 65, 77, 69] }) }
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): received response from SP
    header = Header { version: 17, message_id: 8819 }
    response = CabooseValue
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): sending request to SP
    attempt = 1
    request = Message { header: Header { version: 17, message_id: 8820 }, kind: MgsRequest(ReadComponentCaboose { component: SpComponent { id: "sp" }, slot: 1, key: [86, 69, 82, 83] }) }
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): received response from SP
    header = Header { version: 17, message_id: 8820 }
    response = CabooseValue
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): sending request to SP
    attempt = 1
    request = Message { header: Header { version: 17, message_id: 8821 }, kind: MgsRequest(ReadComponentCaboose { component: SpComponent { id: "sp" }, slot: 1, key: [83, 73, 71, 78] }) }
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): received response from SP
    header = Header { version: 17, message_id: 8821 }
    response = Error(NoSuchCabooseKey([83, 73, 71, 78]))
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): sending request to SP
    attempt = 1
    request = Message { header: Header { version: 17, message_id: 8822 }, kind: MgsRequest(ReadComponentCaboose { component: SpComponent { id: "sp" }, slot: 1, key: [69, 80, 79, 67] }) }
21:41:58.106Z TRAC bb8b77f6-92b3-44d8-a699-f2d97de981a5 (ManagementSwitch): received response from SP
    header = Header { version: 17, message_id: 8822 }
    response = Error(NoSuchCabooseKey([69, 80, 79, 67]))

Every time .inventory_collect_and_get_latest_collection() runs, it returns with Ok(found) every time

00:55:13.944Z INFO test_blueprint_edit: DEBUG: attempt to fetch latest inventory collection
    result = Ok("found")
00:55:14.061Z INFO test_blueprint_edit: DEBUG: attempt to fetch latest inventory collection
    result = Ok("found")
00:55:14.147Z INFO test_blueprint_edit: DEBUG: attempt to fetch latest inventory collection
    result = Ok("found")
00:55:14.217Z INFO test_blueprint_edit: DEBUG: attempt to fetch latest inventory collection
    result = Ok("found")
<...>

I added some additional logging to see if the cabooses were being collected correctly and they were:

cabooses: {Caboose { board: "SimGimletSp", git_commit: "fefefefe", name: "SimGimlet", version: "0.0.1", sign: None }, Caboose { board: "SimGimletSp", git_commit: "ffffffff", name: "SimGimlet", version: "0.0.2", sign: None }, Caboose { board: "SimRot", git_commit: "edededed", name: "SimGimletRot", version: "0.0.3", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRot", git_commit: "edededed", name: "SimSidecarRot", version: "0.0.3", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRot", git_commit: "eeeeeeee", name: "SimGimletRot", version: "0.0.4", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRot", git_commit: "eeeeeeee", name: "SimSidecarRot", version: "0.0.4", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRotStage0", git_commit: "dadadadad", name: "SimGimletRot", version: "0.0.200", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRotStage0", git_commit: "dadadadad", name: "SimSidecarRot", version: "0.0.200", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRotStage0", git_commit: "ddddddddd", name: "SimGimletRot", version: "0.0.200", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimRotStage0", git_commit: "ddddddddd", name: "SimSidecarRot", version: "0.0.200", sign: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") }, Caboose { board: "SimSidecarSp", git_commit: "fefefefe", name: "SimSidecar", version: "0.0.1", sign: None }, Caboose { board: "SimSidecarSp", git_commit: "ffffffff", name: "SimSidecar", version: "0.0.2", sign: None }}

But no zpools were being collected, so it could never match with the desired zpool ID (nexus/test-utils/src/resource_helpers.rs:1596)

02:57:27.694Z INFO test_blueprint_edit: DEBUG: FAIL finding zpool ID
    all_zpools = {}
    result = Collection { id: d069ee03-abe1-45b7-8f24-2d66419abf60 (collection),
<...>

Additionally, no datasets, disks nor zpools were being collected at all!

03:35:07.697Z INFO test_blueprint_edit: DEBUG: collected sled agents
    result = {b6d65341-167c-41df-9b5c-41cded99c229 (sled): SledAgent { time_collected: 2025-05-01T03:34:36.921385Z, source: "http://[::1]:45403", sled_id: b6d65341-167c-41df-9b5c-41cded99c229 (sled), baseboard_id: Some(BaseboardId { part_number: "sim-gimlet", serial_number: "sim-b6d65341-167c-41df-9b5c-41cded99c229" }), sled_agent_address: [::1]:45403, sled_role: Scrimlet, usable_hardware_threads: 16, usable_physical_ram: ByteCount(34359738368), reservoir_size: ByteCount(17179869184), omicron_zones: OmicronZonesConfig { generation: Generation(2), zones: [OmicronZoneConfig { id: 1873f5e7-5b41-4130-9491-8b70cd582638 (service), filesystem_pool: Some(ZpoolName { id: b391a066-87e8-4dd7-9bc9-d8532ecdcb34 (zpool), kind: External }), zone_type: CockroachDb { address: [::1]:50130, dataset: OmicronZoneDataset { pool_name: ZpoolName { id: b391a066-87e8-4dd7-9bc9-d8532ecdcb34 (zpool), kind: External } } }, image_source: InstallDataset }, OmicronZoneConfig { id: 2f65be1d-e840-4e39-929a-195bcf5ea219 (service), filesystem_pool: Some(ZpoolName { id: c355781b-a999-4258-929a-deb744a87c2c (zpool), kind: External }), zone_type: Nexus { internal_address: [::ffff:127.0.0.1]:56706, external_ip: 127.0.0.1, nic: NetworkInterface { id: e14255c7-ba83-4306-af67-ca8d2cef35cd, kind: Service { id: 2f65be1d-e840-4e39-929a-195bcf5ea219 }, name: Name("nexus-2f65be1d-e840-4e39-929a-195bcf5ea219"), ip: 172.30.2.6, mac: MacAddr(MacAddr6([168, 64, 37, 255, 128, 1])), subnet: V4(Ipv4Net { addr: 172.30.2.0, width: 24 }), vni: Vni(100), primary: true, slot: 0, transit_ips: [] }, external_tls: false, external_dns_servers: [1.1.1.1, 9.9.9.9] }, image_source: InstallDataset }, OmicronZoneConfig { id: d7592389-ddd7-4c57-a655-2839555da15c (service), filesystem_pool: Some(ZpoolName { id: ca605836-15ad-4b12-9f53-9aedd84c56a6 (zpool), kind: External }), zone_type: ExternalDns { dataset: OmicronZoneDataset { pool_name: ZpoolName { id: ca605836-15ad-4b12-9f53-9aedd84c56a6 (zpool), kind: External } }, http_address: [::1]:52457, dns_address: [::1]:38599, nic: NetworkInterface { id: 8208debd-5a89-4408-abee-e492c0851c60, kind: Service { id: d7592389-ddd7-4c57-a655-2839555da15c }, name: Name("external-dns-d7592389-ddd7-4c57-a655-2839555da15c"), ip: 172.30.1.6, mac: MacAddr(MacAddr6([168, 64, 37, 255, 128, 0])), subnet: V4(Ipv4Net { addr: 172.30.1.0, width: 24 }), vni: Vni(100), primary: true, slot: 0, transit_ips: [] } }, image_source: InstallDataset }, OmicronZoneConfig { id: ec37e43b-e74a-4c20-a6d5-304297e340b7 (service), filesystem_pool: Some(ZpoolName { id: eb640942-3655-4829-847e-555bb1435b55 (zpool), kind: External }), zone_type: InternalDns { dataset: OmicronZoneDataset { pool_name: ZpoolName { id: eb640942-3655-4829-847e-555bb1435b55 (zpool), kind: External } }, http_address: [::1]:58766, dns_address: [::1]:36290, gz_address: ::1, gz_address_index: 0 }, image_source: InstallDataset }, OmicronZoneConfig { id: ee9c3708-32b1-414f-9621-a969136d2b85 (service), filesystem_pool: Some(ZpoolName { id: 9eb1bcad-3130-4c2d-9cd5-2be4ddaba75d (zpool), kind: External }), zone_type: Clickhouse { address: [::1]:57782, dataset: OmicronZoneDataset { pool_name: ZpoolName { id: 9eb1bcad-3130-4c2d-9cd5-2be4ddaba75d (zpool), kind: External } } }, image_source: InstallDataset }, OmicronZoneConfig { id: eee8e2ed-05bf-4e03-b377-3de4d78cd3ad (service), filesystem_pool: Some(ZpoolName { id: 06859f09-ea30-4912-9212-a41ece7fa62a (zpool), kind: External }), zone_type: CruciblePantry { address: [::1]:40766 }, image_source: InstallDataset }] }, disks: [], zpools: [], datasets: [], omicron_physical_disks_generation: Generation(1) }}

I ran the tests reverting my change of adding sign as a unique index and the zpools, disks and datasets are correctly populated:

04:17:14.951Z INFO test_blueprint_edit: DEBUG: read batched zpools
    zpools = {b6d65341-167c-41df-9b5c-41cded99c229: [Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 1b55562b-5dc8-416e-8dfd-77dcbc52e264 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 4301a958-cd40-4dcc-b980-cf19ce95cc5a (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 571c5f01-bd4d-4205-91fd-d15925c7ff81 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 606e7dd3-0d62-4c0f-9ddd-7c4819fe4e7d (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 880eb26f-3221-4881-9d07-b47436bc0b30 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 8d7cba7c-828f-45ec-bef3-af2c171506b0 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 92736071-1fa8-4836-9d29-77701c07e36f (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: 933a65f9-a6be-4f36-91b0-5e9b16142893 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: a51455ae-6be6-464e-810b-aa3796e25498 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: b0441e7f-1096-414f-a5f9-c8294ce5d65f (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: d572fd6b-b3ad-4c49-9d9d-e4e833db9ebf (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: e37fd44d-e272-4c4e-994d-ae897600dd0f (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:14.827440Z, id: f138f39b-fae8-45f3-86eb-5ee66cc4fd2d (zpool), total_size: ByteCount(17179869184) }]}
04:17:14.108Z INFO test_blueprint_edit: DEBUG: collected sled agents
    result = {b6d65341-167c-41df-9b5c-41cded99c229 (sled): SledAgent { time_collected: 2025-05-01T04:17:13.915427Z, source: "http://[::1]:33989", sled_id: b6d65341-167c-41df-9b5c-41cded99c229 (sled), baseboard_id: Some(BaseboardId { part_number: "sim-gimlet", serial_number: "sim-b6d65341-167c-41df-9b5c-41cded99c229" }), sled_agent_address: [::1]:33989, sled_role: Scrimlet, usable_hardware_threads: 16, usable_physical_ram: ByteCount(34359738368), reservoir_size: ByteCount(17179869184), omicron_zones: OmicronZonesConfig { generation: Generation(2), zones: [OmicronZoneConfig { id: 14215392-b60d-4cfd-be72-b6c4e0890c9d (service), filesystem_pool: Some(ZpoolName { id: e37fd44d-e272-4c4e-994d-ae897600dd0f (zpool), kind: External }), zone_type: InternalDns { dataset: OmicronZoneDataset { pool_name: ZpoolName { id: e37fd44d-e272-4c4e-994d-ae897600dd0f (zpool), kind: External } }, http_address: [::1]:56602, dns_address: [::1]:45210, gz_address: ::1, gz_address_index: 0 }, image_source: InstallDataset }, OmicronZoneConfig { id: 1631db6d-814c-4336-8c87-4a439cc7bbb7 (service), filesystem_pool: Some(ZpoolName { id: f138f39b-fae8-45f3-86eb-5ee66cc4fd2d (zpool), kind: External }), zone_type: ExternalDns { dataset: OmicronZoneDataset { pool_name: ZpoolName { id: f138f39b-fae8-45f3-86eb-5ee66cc4fd2d (zpool), kind: External } }, http_address: [::1]:42452, dns_address: [::1]:36887, nic: NetworkInterface { id: cf043a0b-ce18-42d3-84b9-e5962c4d65d3, kind: Service { id: 1631db6d-814c-4336-8c87-4a439cc7bbb7 }, name: Name("external-dns-1631db6d-814c-4336-8c87-4a439cc7bbb7"), ip: 172.30.1.6, mac: MacAddr(MacAddr6([168, 64, 37, 255, 128, 0])), subnet: V4(Ipv4Net { addr: 172.30.1.0, width: 24 }), vni: Vni(100), primary: true, slot: 0, transit_ips: [] } }, image_source: InstallDataset }, OmicronZoneConfig { id: 463a82e4-1d16-453a-a6b4-3900574c8bcf (service), filesystem_pool: Some(ZpoolName { id: 4301a958-cd40-4dcc-b980-cf19ce95cc5a (zpool), kind: External }), zone_type: Clickhouse { address: [::1]:41282, dataset: OmicronZoneDataset { pool_name: ZpoolName { id: 4301a958-cd40-4dcc-b980-cf19ce95cc5a (zpool), kind: External } } }, image_source: InstallDataset }, OmicronZoneConfig { id: 526fcd32-60a2-4161-aa5b-0bdd33bde972 (service), filesystem_pool: Some(ZpoolName { id: 1b55562b-5dc8-416e-8dfd-77dcbc52e264 (zpool), kind: External }), zone_type: Nexus { internal_address: [::ffff:127.0.0.1]:54933, external_ip: 127.0.0.1, nic: NetworkInterface { id: 4d64a0b6-f377-4743-8500-a9904cc154ea, kind: Service { id: 526fcd32-60a2-4161-aa5b-0bdd33bde972 }, name: Name("nexus-526fcd32-60a2-4161-aa5b-0bdd33bde972"), ip: 172.30.2.6, mac: MacAddr(MacAddr6([168, 64, 37, 255, 128, 1])), subnet: V4(Ipv4Net { addr: 172.30.2.0, width: 24 }), vni: Vni(100), primary: true, slot: 0, transit_ips: [] }, external_tls: false, external_dns_servers: [1.1.1.1, 9.9.9.9] }, image_source: InstallDataset }, OmicronZoneConfig { id: 9d0211a8-f025-4198-875c-a70a05ef1109 (service), filesystem_pool: Some(ZpoolName { id: b0441e7f-1096-414f-a5f9-c8294ce5d65f (zpool), kind: External }), zone_type: CruciblePantry { address: [::1]:38995 }, image_source: InstallDataset }, OmicronZoneConfig { id: aaeff959-fc01-4348-a6fb-3ad9409c79c2 (service), filesystem_pool: Some(ZpoolName { id: 8d7cba7c-828f-45ec-bef3-af2c171506b0 (zpool), kind: External }), zone_type: CockroachDb { address: [::1]:52210, dataset: OmicronZoneDataset { pool_name: ZpoolName { id: 8d7cba7c-828f-45ec-bef3-af2c171506b0 (zpool), kind: External } } }, image_source: InstallDataset }] }, disks: [PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 97921465-3fdc-448e-ba55-140cbb422895" }, variant: U2, slot: 0, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 3089fef6-fd71-4225-92e4-49de14a2bdc4" }, variant: U2, slot: 1, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 1da98f7a-db6c-4cc3-b438-f852c608a7fd" }, variant: U2, slot: 2, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 21d6613b-2b33-4820-86bd-5292c48c7c99" }, variant: U2, slot: 3, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 2c6af5f9-e1c7-472a-8291-d720b1ba6f73" }, variant: U2, slot: 4, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 2ec33a91-3c25-42af-8cf3-74a6e968e0db" }, variant: U2, slot: 5, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 49cd649e-3ab5-48a8-87c3-b1c3e789991b" }, variant: U2, slot: 6, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 688cf65f-ab21-40ff-992f-1a74865436b6" }, variant: U2, slot: 7, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: 7c6c4062-8b15-4a77-8ec1-1a66bf1902c7" }, variant: U2, slot: 8, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }, PhysicalDisk { identity: DiskIdentity { vendor: "test-vendor", model: "test-model", serial: "totally-unique-serial: c0ad44ef-a848-4af4-9211-68abcde84d52" }, variant: U2, slot: 9, firmware: Nvme(NvmeFirmware { active_slot: 1, next_active_slot: None, number_of_slots: 1, slot1_is_read_only: true, slot_firmware_versions: [Some("SIMUL1")] }) }], zpools: [Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: 4301a958-cd40-4dcc-b980-cf19ce95cc5a (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: 571c5f01-bd4d-4205-91fd-d15925c7ff81 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: 606e7dd3-0d62-4c0f-9ddd-7c4819fe4e7d (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: 880eb26f-3221-4881-9d07-b47436bc0b30 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: 8d7cba7c-828f-45ec-bef3-af2c171506b0 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: 933a65f9-a6be-4f36-91b0-5e9b16142893 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: a51455ae-6be6-464e-810b-aa3796e25498 (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: b0441e7f-1096-414f-a5f9-c8294ce5d65f (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: d572fd6b-b3ad-4c49-9d9d-e4e833db9ebf (zpool), total_size: ByteCount(17179869184) }, Zpool { time_collected: 2025-05-01T04:17:13.915427Z, id: e37fd44d-e272-4c4e-994d-ae897600dd0f (zpool), total_size: ByteCount(17179869184) }], datasets: [Dataset { id: Some(17103fa7-5bb6-42e7-b8ca-880857f253e7 (dataset)), name: "oxp_571c5f01-bd4d-4205-91fd-d15925c7ff81/crucible", available: ByteCount(0), used: ByteCount(0), quota: None, reservation: None, compression: "off" }, Dataset { id: Some(c3e166e8-1408-4e60-a56d-a67a1a53061d (dataset)), name: "oxp_571c5f01-bd4d-4205-91fd-d15925c7ff81/crypt/debug", available: ByteCount(0), used: ByteCount(0), quota: None, reservation: None, compression: "off" }, Dataset { id: Some(cea7c068-5b68-4847-aeea-01de0ab39886 (dataset)), name: "oxp_606e7dd3-0d62-4c0f-9ddd-7c4819fe4e7d/crucible", available: ByteCount(0), used: ByteCount(0), quota: None, reservation: None, compression: "off" }, Dataset { id: Some(fadb90a4-f21f-443e-87a7-c8b1d61baf3c (dataset)), name: "oxp_606e7dd3-0d62-4c0f-9ddd-7c4819fe4e7d/crypt/debug", available: ByteCount(0), used: ByteCount(0), quota: None, reservation: None, compression: "off" }, Dataset { id: Some(54161552-8687-45e4-950a-78bf1acd965f (dataset)), name: "oxp_880eb26f-3221-4881-9d07-b47436bc0b30/crucible", available: ByteCount(0), used: ByteCount(0), quota: None, reservation: None, compression: "off" }, Dataset { id: Some(79dfb61c-63d0-41d2-ba0f-c25c2d9ef5b1 (dataset)), name: "oxp_880eb26f-3221-4881-9d07-b47436bc0b30/crypt/debug", available: ByteCount(0), used: ByteCount(0), quota: None, reservation: None, compression: "off" }], omicron_physical_disks_generation: Generation(1) }}

Now that we know that no disks, datasets, nor zpools are being fetched, let's see if they're being created at all.

It looks like they are:

05:51:05.115Z INFO test_blueprint_edit: DEBUG: get matching physical disk
    disk = Some(PhysicalDiskPutRequest { id: 2b376b22-69ef-4bf1-93c4-4fc1aa5842e5 (physical_disk), model: "test-model", serial: "totally-unique-serial: 2b376b22-69ef-4bf1-93c4-4fc1aa5842e5", sled_id: b6d65341-167c-41df-9b5c-41cded99c229, variant: U2, vendor: "test-vendor" })
    expected_id = 2b376b22-69ef-4bf1-93c4-4fc1aa5842e5 (physical_disk)
05:51:05.116Z INFO test_blueprint_edit: DEBUG: get matching zpool
    expected_id = 120399c2-612c-44e1-bd79-e119314aa409 (zpool)
    zpool = Some(ZpoolPutRequest { id: 120399c2-612c-44e1-bd79-e119314aa409, physical_disk_id: 2b376b22-69ef-4bf1-93c4-4fc1aa5842e5 (physical_disk), sled_id: b6d65341-167c-41df-9b5c-41cded99c229 })
05:51:05.241Z INFO test_blueprint_edit: DEBUG: get matching datasets
    datasets = [(743fc688-77b3-4440-8c91-84fbc98bc59c (dataset), [::1]:60481)]
    zpool_id = 120399c2-612c-44e1-bd79-e119314aa409 (zpool)

I retrieved the previous values with the following calls:

let debug_disks = sled_agent.get_all_physical_disks();
        let mut debug_disks_iter =
            debug_disks.iter().filter(|disk| disk.id == physical_disk_id);
        let debug_disk = debug_disks_iter.next();
        info!(log, "DEBUG: get matching physical disk"; "disk" => ?debug_disk, "expected_id" => ?physical_disk_id);

let debug_zpools = sled_agent.get_zpools();
        let mut debug_zpools_iter =
            debug_zpools.iter().filter(|z| z.id == *zpool.id.as_untyped_uuid());
        let debug_zpool = debug_zpools_iter.next();
        info!(log, "DEBUG: get matching zpool"; "zpool" => ?debug_zpool, "expected_id" => ?zpool_id);

let debug_datasets = sled_agent.get_crucible_datasets(zpool.id);
        info!(log, "DEBUG: get matching datasets"; "datasets" => ?debug_datasets, "zpool_id" => ?zpool_id);

It would appear that the zpools, datasets and disks are either not being saved in the DB correctly, and/or fetched. I need to run now, but I'll continue debugging tomorrow.

Frankly, I'm surprised the cabooses are being saved and retrieved correctly, but it's the zpools, datasets and disks that are not 🤷‍♀️

@davepacheco
Copy link
Collaborator

Does the inventory collection process log anything in the Nexus log?

@karencfv
Copy link
Contributor Author

karencfv commented May 1, 2025

Does the inventory collection process log anything in the Nexus log?

Yeah, it just loops over and over making API calls trying to retrieve the inventory collection but I couldn't identify any meaningful errors :(

@karencfv
Copy link
Contributor Author

karencfv commented May 2, 2025

So apparently diesel got the best of me 😅 I tried to find a way to make these logs more understandable, but alas, this is the best I got.

I captured what was going to be inserted into inv_caboose right before the attempt to insert.

On a working branch it looks like this:

03:35:09.086Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.781694Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.094Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.803283Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.094Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.825446Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.094Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.843124Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.095Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.783668Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.095Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.804866Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.095Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.826656Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.096Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.844819Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.096Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.788817Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.097Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.806391Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.097Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.827686Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.098Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.846432Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.099Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.789921Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.099Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.807939Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.100Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.829313Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.100Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.851976Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.101Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.791483Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.102Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.809490Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.102Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.830877Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.103Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.853022Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.104Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.793026Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.104Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.811068Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.105Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.832485Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.106Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.854261Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.760Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.670160Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.760Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.679486Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.760Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.689446Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.761Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.699057Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.761Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.671271Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.761Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.680586Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.763Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.690543Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.763Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.700077Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.763Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.672372Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.763Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.681599Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.764Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.691566Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.764Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.701081Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.765Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.673379Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.766Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.682614Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.768Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.692684Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.768Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.702089Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.769Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.674400Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.770Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.683791Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.770Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.694264Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.771Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.703092Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.772Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.675506Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.773Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.684956Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.774Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.695275Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
03:35:09.775Z INFO 2e13f52c-75fa-4c35-be71-5cb5997cec2c (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.704099Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
<...>

As it can be seen, each item ID has several entries. One for each of the components ("SimSidecar0":"SimSidecarSp", "SimSidecar1":"SimSidecarSp", "SimGimlet00":"SimGimletSp", etc).

Running the same test with a branch that uses is_not_distinct_from the results are quite different:

02:52:42.382Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.003054Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.390Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.027841Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.391Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.050019Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.392Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.062083Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.393Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.005227Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.393Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.029416Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.394Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.051596Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.395Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.067968Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot1, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimGimletSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "fefefefe", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimlet", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.396Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.011883Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.396Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.031017Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.397Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.053147Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.398Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.069837Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotA, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "eeeeeeee", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.4", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.398Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.013595Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.399Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.032528Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.400Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.054683Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.400Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.075612Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: RotSlotB, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "edededed", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.3", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.401Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.015556Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.402Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.034020Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.402Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.056181Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.403Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.076688Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ddddddddd", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.404Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.017211Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.404Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.040186Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar1", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecarRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.405Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.057206Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet00", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:42.406Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.077678Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: Stage0Next, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "i86pc", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimGimlet01", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimRotStage0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "dadadadad", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimGimletRot", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.200", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf"), _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:43.081Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: 83077f5e-e4e7-4f0b-bd06-053c2b6800e1 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.950673Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:43.283Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: ad036d12-49bf-439f-8267-6c680c8fff71 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:43.131820Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:43.433Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: a43b77de-08bf-4bb4-a4ae-7b3000a3b1d6 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:43.330749Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
02:52:43.571Z INFO 1476b7e6-81c1-4420-8d8d-4168034a3e06 (ServerContext): DEBUG: Inserting into inv_caboose
    background_task = inventory_collection
    values = SelectStatement { select: SelectClause((id, id, Bound { item: f9a9e38e-c1d9-4461-ba01-9a0391b91ffd (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:43.469031Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
<...More of the same, next row is an attempt from the nex item ID...>

In this case only the first item ID has several entries, the next ones are just a single entry for the first component, and then it moves on to the next item ID.

I took a look at the difference between the first row of each item ID that will be inserted in both the healthy and the broken example:

Healthy

values = SelectStatement { select: SelectClause((id, id, Bound { item: c9fd0d25-28ac-4020-92af-491dd242207d (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:08.781694Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
values = SelectStatement { select: SelectClause((id, id, Bound { item: e0dc3fbd-bcd9-40ae-9d69-638f4c90bb38 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T03:35:09.670160Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:45291", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }

Broken

values = SelectStatement { select: SelectClause((id, id, Bound { item: b73ecca0-0bb9-49b7-be0a-eb08348db210 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.003054Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }
values = SelectStatement { select: SelectClause((id, id, Bound { item: 83077f5e-e4e7-4f0b-bd06-053c2b6800e1 (collection), _marker: PhantomData<diesel::pg::types::sql_types::Uuid> }, Bound { item: 2025-05-02T02:52:42.950673Z, _marker: PhantomData<diesel::pg::types::sql_types::Timestamptz> }, Bound { item: "http://[::1]:36741", _marker: PhantomData<diesel::sql_types::Text> }, Bound { item: SpSlot0, _marker: PhantomData<nexus_db_schema::enums::CabooseWhichEnum> })), from: FromClause { from_clause: Grouped(InfixNode { lhs: Join { left: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::hw_baseboard_id::table>) }, right: FromClause { from_clause: StaticQueryFragmentInstance(PhantomData<nexus_db_schema::schema::sw_caboose::table>) }, kind: Inner }, rhs: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(And { left: Grouped(Eq { left: part_number, right: Bound { item: "FAKE_SIM_SIDECAR", _marker: PhantomData<diesel::sql_types::Text> } }), right: Grouped(Eq { left: serial_number, right: Bound { item: "SimSidecar0", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: board, right: Bound { item: "SimSidecarSp", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: git_commit, right: Bound { item: "ffffffff", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: name, right: Bound { item: "SimSidecar", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(Eq { left: version, right: Bound { item: "0.0.2", _marker: PhantomData<diesel::sql_types::Text> } }) }), right: Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } }) }), middle: OnKeyword }) }, distinct: NoDistinctClause, where_clause: NoWhereClause, order: NoOrderClause, limit_offset: LimitOffsetClause { limit_clause: NoLimitClause, offset_clause: NoOffsetClause }, group_by: NoGroupByClause, having: NoHavingClause, locking: NoLockingClause }

The only difference I could find is that one uses Grouped(IsNotDistinctFrom { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> } and the other Grouped(Eq { left: sign, right: Bound { item: None, _marker: PhantomData<diesel::sql_types::Nullable<diesel::sql_types::Text>> }. Perhaps this behaviour with the indexes is an inherent behaviour when using IS NOT DISTINCT FROM? That's my best guess at the moment. I tried googling about this but didn't really come up with anything. Perhaps someone else knows better than me?

@karencfv
Copy link
Contributor Author

karencfv commented May 5, 2025

Thinking that the use of is_not_distinct_from might be the cause for the unexpected behaviour, I quickly changed the insert to use eq instead. The tests passed, and this small change further strengthened my suspicion. Because we know that eq does not work here because sign is a nullable field (it would ignore all rows with a null sign), I changed my PR to to use is_null / is_not_null and alas, the tests failed once more.

This made me think that perhaps the problem itself was that we are creating a unique index from a nullable field. I searched based on that and came up with some interesting results. In CockroachDB with the UNIQUE constraint null values are not considered a duplicate value.

From the documentation:

You can insert NULL values into columns with the UNIQUE constraint because NULL is the absence of a value, so it is never equal to other NULL values and not considered a duplicate value. This means that it's possible to insert rows that appear to be duplicates if one of the values is NULL.

Their advice for a solution is to use the NOT NULL constraint if this behaviour is necessary:

If you need to strictly enforce uniqueness, use the NOT NULL constraint in addition to the UNIQUE constraint. You can also achieve the same behavior through the table's Primary Key.

I looked around to see if there were any workarounds we could use to keep this field null and found out a few things.

Postgres has a NULLS NOT DISTINCT clause for this case specifically. Sadly, CockroachDB does not support this clause yet.

We could potentially use two partial indexes, one for IS NULL and another for IS NOT NULL as seen in the most upvoted stackoverflow answer for this question. According to the person who wrote this, we would have to update all queries that use these indexed to use a WHERE clause.

Frankly, the latter approach appears to be more trouble than it's worth. The original person asking the question on stack overflow had the idea of just setting the field to not nullable, and populating it with "00000000-0000-0000-0000-000000000000" when null. For our use case, I think this may be the best way forward. We were already debating whether the field should even be nullable as in the future all caboose components will have a sign value. This approach is also consistent with CockroachDB's advice to just set the field as NOT NULL if we need to strictly enforce uniqueness.

Thoughts? @davepacheco @jgallagher

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

record caboose SIGN value in inventory
3 participants